package mx.ipn.presentacion;

import java.util.Date;

import mx.ipn.to.BitacoraAccesoTO;
import mx.ipn.to.FechaHoraTO;
import mx.ipn.to.MotivoTO;
import mx.ipn.to.UsuarioTO;
import mx.ipn.persistencia.FabricaDeDAOs;
import mx.ipn.presentacion.ConexionConNegocios;
import mx.ipn.presentacion.ui.Ui_Login;
import mx.ipn.presentacion.ui.Ui_VentanaInicio;
import mx.ipn.presentacion.telefonista.TelefonistaPrincipal;
import mx.ipn.presentacion.empleado.EmpleadoPrincipal;
import mx.ipn.presentacion.facturacion.FacturaP;
import mx.ipn.presentacion.reportes.*;

import org.apache.axis2.AxisFault;

import com.trolltech.qt.gui.QApplication;
import com.trolltech.qt.gui.QCloseEvent;
import com.trolltech.qt.gui.QDialog;
import com.trolltech.qt.gui.QWidget;

import com.trolltech.qt.gui.QMessageBox;

public class Login extends QDialog {

	Ui_Login ui = new Ui_Login();
	FabricaDeDAOs fabrica = FabricaDeDAOs.getFabricaDeDAOs(1);

	public Login() {
		ui.setupUi(this);

		Utilerias.centrarVentana(this);
		ui.lineEditUsuario.setText("contra1");
		ui.lineEditContrasenia.setText("pass1");
		ui.okButton.clicked.connect(this, "login()");
		ui.cancelButton.clicked.connect(this, "quit()");
	}

	public Login(QWidget parent) {
		super(parent);
		ui.setupUi(this);
	}

	public void login() {
		UsuarioTO usuarioTO = new UsuarioTO();

		usuarioTO.setNombreUsuario(ui.lineEditUsuario.text());
		usuarioTO.setContrasenia(ui.lineEditContrasenia.text());

		UsuarioTO resp = (UsuarioTO) ConexionConNegocios.invocaServicio(
				"login", usuarioTO, UsuarioTO.class);

		if (resp.getTipoError() > 0)
			Utilerias.mostrarMensajeError(this, resp);

		else {

			BitacoraAccesoTO bAccesoTO = new BitacoraAccesoTO();
			MotivoTO motivoTO = fabrica
					.getMotivoDAO()
					.findMotivoByNombreTipoMotivo("inicio de sesion", (short) 1);

			bAccesoTO.setFecha(new Date());
			bAccesoTO.setIdMotivo(motivoTO.getIdMotivo());

			Date fecha = FechaHoraTO.getFecha(new Date());
			fecha = FechaHoraTO.getFecha(fecha.toString());
			Date fechaHora = new Date();
			
			Date dif = new Date(fechaHora.getTime() - fecha.getTime() + FechaHoraTO.getFechaUtil("1970/01/01").getTime());
			
			bAccesoTO.setHora(dif);
			bAccesoTO.setIdUsuario(resp.getIdUsuario());

			fabrica.getBitacoraAccesoDAO().insertBitacoraAcceso(bAccesoTO);
			VentanaInicio ventana = new VentanaInicio(resp, this);

			ventana.show();
			// this.close();
			this.setHidden(true);
			/*
			 * QMessageBox.information(this, "Información", "Autentificación
			 * correcta.\nBienvenido " + resp.getNombreUsuario(),
			 * QMessageBox.StandardButton.Ok, QMessageBox.StandardButton.Ok);
			 * 
			 * if (resp.getGrupoUsuarioTO().getNombre().equals("telefonista")) {
			 * TelefonistaPrincipal ventanaTelefonista = new
			 * TelefonistaPrincipal( resp); ventanaTelefonista.show();
			 * this.close(); } if
			 * (resp.getGrupoUsuarioTO().getNombre().equals("supervisor") ||
			 * resp.getGrupoUsuarioTO().getNombre().equals( "administrador") ||
			 * resp.getGrupoUsuarioTO().getNombre().equals( "telefonista") ||
			 * resp.getGrupoUsuarioTO().getNombre().equals("operadora")) {
			 * EmpleadoPrincipal ventanaEmpleado = new EmpleadoPrincipal(resp);
			 * ventanaEmpleado.show(); this.close();
			 * 
			 * ComportamientoPropiedadesReporte propiedadesReporte = new
			 * ComportamientoPropiedadesReporte(); propiedadesReporte.show();
			 * this.close(); } if
			 * (resp.getGrupoUsuarioTO().getNombre().equals("administrador")) {
			 * FacturaP p = new FacturaP(); this.close(); }
			 */
		}

	}

	public void quit() { 	
		QApplication.instance().aboutToQuit.emit();
		this.close();
	}
	
	protected void closeEvent(QCloseEvent e) {
		this.close();
	}

}